$(function () {
    var emp_datagrid = $("#emp_datagrid");
    var emp_dialog = $("#emp_dialog");
    var editForm = $("#editForm");

    //员工列表初始化
    emp_datagrid.datagrid({
        fit: true,
        fitColumns: true,
        striped: true,
        url: "/employee/list.do",
        pagination: true,
        rownumbers: true,
        singleSelect: true,
        toolbar: "#tb",
        columns: [[
            {field: "cb", checkbox: true},
            {field: "id", hidden: true},
            {field: "username", title: "员工名称", width: 80},
            {field: "realname", title: "真实姓名", width: 80},
            {field: "password", title: "密码", width: 80},
            {field: "tel", title: "电话", width: 80},
            {field: "email", title: "邮箱", width: 80},
            {field: "dept", title: "部门", width: 80, formatter: deptFormatter},
            {field: "inputtime", title: "入职时间", width: 80},
            {field: "state", title: "状态", width: 80, formatter: stateFormatter},
            {field: "admin", title: "是否是管理员", width: 80, formatter: adminFormatter}
        ]],
        onClickRow: function (index, row) {
            //判断当前选择员工是在职还是离职
            if (row.state == 0) {
                //在职
                $("#quit").linkbutton({
                    text: "离职"
                })
            } else {
                //离职
                $("#quit").linkbutton({
                    text: "复职"
                })
            }
        }
    })
    //end


    //对话框初始化
    emp_dialog.dialog({
        width: 300,
        height: 400,
        buttons: "#bb",
        closable: true,
        closed: true
    })
    //end

    var cmdObj = {
        //员工添加
        add: function () {
            //打开弹出框
            emp_dialog.dialog("open");

            //设置标题投
            emp_dialog.dialog("setTitle", "员工添加");

            //清除缓存数据
            editForm.form("clear");


        },//员工编辑
        edit: function () {
            //判断是否选中数据
            var row = emp_datagrid.datagrid("getSelected");
            if (!row) {
                //提示选择数据
                $.messager.alert('温馨提示', '至少选择一条编辑数据', "info");
                return;
            }
            //打开弹出框
            emp_dialog.dialog("open");

            //设置标题投
            emp_dialog.dialog("setTitle", "员工编辑");

            //清除缓存数据
            editForm.form("clear");

            //构建部门回显数据
            if (row.dept) {
                row["dept.id"] = row.dept.id;
            }
            //数据回显
            editForm.form("load", row);
            //手动添加角色数据回显
            //通过当前编辑员工id查找这个用户拥有的角色数据, id值
            //因为组件无法自动发起请求, 只能通过手动发起ajax获取角色的ids集合
            $.get("/role/getRoleIdsByEmployeeId.do?id=" + row.id, function (data) {
                //多选下拉框设置默认数据
                $("#roles").combobox("setValues", data);
            })


        },//员工保存/更新
        save: function () {

            //表单提交url
            var url = "";

            //使用id区分保存于更新操作
            var id = $("#empId").val();
            if (id) {
                //编辑
                url = "/employee/edit.do";
            } else {
                //添加
                url = "/employee/save.do";
            }

            //提交表单
            editForm.form("submit", {
                url: url,
                //表单提交前, 额外添加数据
                onSubmit: function (params) {
                    //roles[i].id = xxx

                    //获取角色的多选下拉框的值
                    var ids = $("#roles").combobox("getValues");

                    for (var i = 0; i < ids.length; i++) {
                        params["roles[" + i + "].id"] = ids[i];
                    }
                },
                success: function (data) {
                    //jquery将字符串转换json对象
                    //data必须是标准的json字符串
                    data = $.parseJSON(data);
                    if (data.success) {
                        //提示成功
                        $.messager.confirm('温馨提示', "操作成功", function (r) {
                            //关闭窗口
                            emp_dialog.dialog("close");
                            //刷新数据
                            emp_datagrid.datagrid("reload");

                        });
                    } else {
                        $.messager.alert('温馨提示', data.msg, "error");
                    }
                }

            })

        },//员工删除
        remove: function () {
            //判断是否选中数据
            var row = emp_datagrid.datagrid("getSelected");
            if (!row) {
                //提示选择数据
                $.messager.alert('温馨提示', '至少选择一条要删除数据', "info");
                return;
            }
            $.messager.confirm('温馨提示', "您确定要删除么?", function (ret) {
                if (ret) {
                    //确定删除
                    $.get("/employee/delete.do?id=" + row.id, function (data) {

                        if (data.success) {
                            //删除成功
                            $.messager.confirm('温馨提示', "删除成功", function (r) {
                                //刷新数据
                                emp_datagrid.datagrid("reload");
                            });
                        } else {
                            $.messager.alert('温馨提示', data.msg, "error");
                        }

                    })
                }

            });
        },//刷新
        reload: function () {
            emp_datagrid.datagrid("reload");
        },
        //对话框取消
        cancel: function () {
            //关闭窗口
            emp_dialog.dialog("close");
        },//员工离职/复职
        quit: function () {
            //判断是否选中数据
            var row = emp_datagrid.datagrid("getSelected");
            if (!row) {
                //提示选择数据
                $.messager.alert('温馨提示', '至少选择要离职员工', "info");
                return;
            }
            $.messager.confirm('温馨提示', "您确定要让该员工离职么?", function (ret) {
                if (ret) {
                    //确定离职
                    $.get("/employee/quit.do?id=" + row.id, function (data) {
                        if (data.success) {
                            //删除成功
                            $.messager.confirm('温馨提示', "操作成功", function (r) {
                                //刷新数据
                                emp_datagrid.datagrid("reload");
                            });
                        } else {
                            $.messager.alert('温馨提示', data.msg, "error");
                        }
                    })
                }

            });
        },
        //高级查询
        //思路: 加载员工列表时, 将多条件查询数据一同发起请求
        searchT: function () {
            var kw = $("#keyword").val();
            //加载列表数据时,携带额外参数
            emp_datagrid.datagrid("load", {
                keyword: kw
            })

        }

    }
    //给按钮绑定事件
    $("a[data-cmd]").click(function () {
        var cmd = $(this).data("cmd");
        cmdObj[cmd]();
    })


})

//部门格式化
function deptFormatter(value, row, index) {
    return value ? value.name : "";
}

//状态格式化
function stateFormatter(value, row, index) {
    if (value == 0) {
        return "<span style='color: green;'>在职</span>"
    }
    return "<span style='color: red;'>离职</span>";
}

//是否管理员格式化
function adminFormatter(value, row, index) {
    return value ? "是" : "否";
}
